C++
1.6k words
二叉搜索树二叉搜索树(BST,Binary Search Tree)又称为二叉排序树,空树也算 二叉搜索树有如下性质 若左子树不为空,则左子树上所有节点值小于根节点 若右子树不为空,则右子树上所有节点值大于根节点 左子树和右子树也都是二叉搜索树 例如 当然如果左大右小也可以 二叉搜索树的一个性质是中序遍历有序 查找从根节点开始查找比较,比根大向右查找,比根小向左查找 最多查找高度次,如果没找到就代表值不存在 插入如果为空,新增节点 如果不为空,按照性质插入节点 删除首先需要确定值是否在二叉树中 要删除就右四种情况 无子节点——直接删除即可,可以合并到只有一个节点的情况 只有左节点——删除,令该节点的父节点指向左节点 只有右节点——删除,令该节点的父节点指向右节点 有两个子节点——在左子树寻找关键之最大的节点或右子树的最小节点,以最小节点为例,找到最小节点后与删除节点替换,再处理替换后的节点删除问题 实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647...
C++
2.1k words
多态概念多态是面向对象三大特性中相对复杂的一个,他从直观上理解就是,不同的人(对象)做同一件事情(调用函数),会产生不同的结果(状态) 多态又分为静态多态和动态多态,静态多态其实就是函数重载,在本篇文章中主要介绍动态多态,在讲到多态的原理时,我们会细讲其中的区别 定义及实现多态是在不同的为继承关系的类对象,调用同一个函数(同名函数),产生的不同的行为 例如,Student是Person的子类,同样的买票动作下,Person是全价,而Student是全价 构成条件构成多态必须有两个条件 必须通过父类的指针或引用调用虚函数 被调用的函数必须是虚函数,子类必须重写父类的虚函数 例如 1234567891011121314151617181920212223242526272829303132333435#include<iostream>using namespace std;class Person{public: virtual void Buyticket() { cout << "Person:...
C++
2.6k words
继承继承的概念继承是C++面向对象的三大特性之一,他设计的初衷是为了提高代码的复用性 例如,对于重复的功能代码,我们可以提炼抽象成函数,减少代码量,提高复用性 而对于重复或者相似的类,我们也可以提炼出他们共同的部分,称之为基类,那提炼之前的类,我们可以把它想象成是基类派生出的类,称之为派生类,还有一种更形象化的叫法,父类与子类 那我们在这里就能明白了,继承是类的设计层面的复用 例如,我们想要从人派生出学生和教师两个子类,这里要重点理解两个方向,一是由下而上的集成学生和教师共同点产生的基类,二是由上而下的从人继承出学生和教师产生的子类 123456789101112class Person{public: void Print() { cout << "name:" << _name << endl; cout << "age:" << _age << endl; }protected: s...
C++
1.2k words
模板进阶非类型模板参数模板参数分为类型形参和非类型形参 类型形参是出现在模板参数中,跟在class或者typename之后的参数类型名称 非类型形参是使用常量作为模板的一个参数,在类或者函数中可以作为常量使用 例如 12345678910111213141516171819202122232425262728namespace xu{ template<class T, size_t N = 10> class array { public: T& operator[](size_t index) { return _array[index]; } const T& operator[](size_t index) const { return _array[index]; } size_t size() const ...
Web
1.9k words
CSS进阶复合选择器复和选择器是由两个或多个基础选择器,通过不同的方式组合而成,可以更准确、更高效的选择目标元素(标签)。 后代选择器后代选择器用于选中某元素的后代元素。 选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开。 12345678910<style>  div span {    color: red;  }</style><span> span 标签</span><div>  <span>这是 div 的儿子 span</span ></div> 子代选择器子代选择器用于选中某元素的子代元素(最近的子级)。 选择器写法:父选择器 > 子选择器 { CSS 属性},父子选择器之间用 > 隔开。 123456789101112<style>  div > span {    color: red;  }</style><div>  <span&g...
Web
1.4k words
CSS基础层叠样式表 (Cascading Style Sheets,缩写为 CSS)是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。 一般在title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。 12345678910<title>CSS 初体验</title><style> /* 选择器 { } */ p { /* CSS 属性 */ color: red; }</style><p>CSS</p> 属性名和属性值成对出现 → 键值对。 CSS引入方式 内部样式表:学习使用 CSS 代码写在 style 标签里面 外部样式表:开发使用 CSS 代码写在单独的 CSS 文件中(**.css**) 在 HTML 使用 link 标签引入 1<link rel="stylesheet" href="./my.css"> 行内样式:配合...
Web
1.6k words
列表列表是布局内容排列整齐的区域,分为无序列表、有序列表、定义列表。 无序列表无序列表是布局排列整齐的不需要规定顺序的区域。 标签:ul 嵌套 li,ul 是无序列表,li 是列表条目。 例如 123456<ul> <li>第一项</li> <li>第二项</li> <li>第三项</li> ……</ul> ul 标签里面只能包裹 li 标签 li 标签里面可以包裹任何内容 有序列表有序列表是布局排列整齐的需要规定顺序的区域。 标签:ol 嵌套 li,ol 是有序列表,li 是列表条目。 例如 123456<ol> <li>第一项</li> <li>第二项</li> <li>第三项</li> ……</ol> ol 标签里面只能包裹 li 标签 li 标签里面可以包裹任何内容 定义列表标签:dl 嵌套 dt 和 dd,dl 是定义列表,dt 是定义列表的标题...
Web
1.3k words
HTML 基础HTML的意思就是超文本标记语言(HyperText Markup Language),这里的超文本的意思就是多媒体内容,有文本、图片、音视频等内容,这里的标记就是使用代码的形式,使用尖括号的标签进行标记的意思,例如 标签结构 标签要成对出现,中间包裹内容 <>里面放英文字母(标签名) 结束标签比开始标签多 / 标签分类:双标签和单标签 123<strong>需要加粗的文字<strong><br><hr> HTML骨架 html:整个网页 head:网页头部,用来存放给浏览器看的信息,例如 CSS title:网页标题 body:网页主体,用来存放给用户看的信息,例如图片、文字 12345678<html> <head> <title>网页标题</title> </head> <body> 网页主体 </body></html> VS Code 可以快速生成骨架:在 ...